/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package contatoserializado;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author akono
 */
public class LeitorEscritorSerial {

    private File arq;

    public LeitorEscritorSerial(String caminho) {
        //File arq = new File("C:/furb_temp/contatos/contatos.dat");
        this.arq = new File(caminho);
        arq.getParentFile().mkdirs();
    }

    public void gravar(ArrayList<Contato> contatos) {

        try {

            FileOutputStream fos = new FileOutputStream(arq);
            //BufferedOutputStream bis = new BufferedOutputStream(fos);
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            //deve gravar o contato no ar
            oos.writeObject(contatos);

            fos.close();
            oos.close();

        } catch (FileNotFoundException ex) {
            Logger.getLogger(LeitorEscritorSerial.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(LeitorEscritorSerial.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public ArrayList<Contato> lerTodos() {
        ArrayList<Contato> lista = null;

        try {
            lista = new ArrayList<Contato>();
            FileInputStream fis = new FileInputStream(this.arq);
            ObjectInputStream ois = new ObjectInputStream(fis);

            Contato cont = null;
            cont =  (Contato) ois.readObject();
            

        } catch (FileNotFoundException ex) {
            Logger.getLogger(LeitorEscritorSerial.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(LeitorEscritorSerial.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(LeitorEscritorSerial.class.getName()).log(Level.SEVERE, null, ex);
        }

        return lista;
    }

    public static void main(String[] args) {
        Contato c1 = new Contato("Andre", "555", "andseiji@gmail.com");
        Contato c2 = new Contato("Anderson", "444", "andersont@gmail.com");
        LeitorEscritorSerial ser = new LeitorEscritorSerial("C:/furb_temp/contatos/contatos.dat");

        ArrayList<Contato> cont = new ArrayList<Contato>();

        cont.add(c1);
        cont.add(c2);

        ser.gravar(cont);

        List<Contato> c = ser.lerTodos();

        for (Contato contato : c) {
            System.out.println("contato: " + contato.getNome());
            System.out.println("contato: " + contato.getEmail());
            System.out.println("contato: " + contato.getTelefone());
        }

    }

}
